package site.jlopen.secret.service.intf;

import java.util.List;

import site.jlopen.secret.common.SecretClientResponse;
import site.jlopen.secret.model.node.SecretNodeCreateReq;
import site.jlopen.secret.model.node.SecretNodeInfoResp;

/**
* @ClassName: NodeManage
* @Description: 节点服务接口
* @author ChenJiaLu
* @date 2024年9月27日 下午2:08:53
*
 */
public abstract interface SecretNodeManage {

	/**
	* <strong>绑定节点</strong>
	* @Title: createNode
	* @Description: <p>TODO</p>
	* @param form 
	* @return <p>TODO</p>
	* ClientResponse<String>
	* @author ChenJiaLu
	* @date 2024年9月27日 下午1:41:40
	 */
	public SecretClientResponse<SecretNodeInfoResp> createNode(SecretNodeCreateReq form);
	
	/**
	* <strong>修改绑定的节点</strong>
	* @Title: updateNode
	* @Description: <p>TODO</p>
	* @param form
	* @return <p>TODO</p>
	* ClientResponse<String>
	* @author ChenJiaLu
	* @date 2024年9月27日 下午1:41:56
	 */
	public SecretClientResponse<SecretNodeInfoResp> updateNode(SecretNodeCreateReq form);

	/**
	* <strong>移除节点</strong>
	* @Title: removeNode
	* @Description: <p>TODO</p>
	* @param nodeCode
	* @return <p>TODO</p>
	* ClientResponse<String>
	* @author ChenJiaLu
	* @date 2024年9月27日 下午1:42:02
	 */
	public SecretClientResponse<String> removeNode(String nodeCode);

	/**
	* <strong>刷新节点状态</strong>
	* @Title: reStatusNode
	* @Description: <p>刷新节点状态的时候只会更新节点状态，节点在线则返回成功，离线返回失败</p>
	* @param nodeCode
	* @return <p>TODO</p>
	* ClientResponse<String>
	* @author ChenJiaLu
	* @date 2024年9月27日 下午1:42:06
	 */
	public SecretClientResponse<String> reStatusNode(String nodeCode);

	/**
	* <strong>根据节点ID（唯一编号）查询节点信息</strong>
	* @Title: getNode
	* @Description: <p>TODO</p>
	* @param nodeCode
	* @return <p>TODO</p>
	* ClientResponse<String>
	* @author ChenJiaLu
	* @date 2024年9月27日 下午1:42:10
	 */
	public SecretClientResponse<SecretNodeInfoResp> getNode(String nodeCode);
	
	/**
	* <strong>获取所有节点</strong>
	* @Title: getNodes
	* @Description: <p>TODO</p>
	* @return <p>TODO</p>
	* SecretClientResponse<SecretNodeInfoResp>
	* @author ChenJiaLu
	* @date 2025年2月19日 10:19:54
	 */
	public SecretClientResponse<List<SecretNodeInfoResp>> getNodes();

}
